Integrated circuit (IC) design is performed using graphical tools to define circuit elements and interconnect the circuit elements. In creating a “layout” that defines the positions and interconnections of the circuit elements, a designer may repetitively utilize blocks of circuitry throughout the layout. These blocks of circuitry are known as clones, since the content of each block is identical.
The process of generating an IC design layout using cloning is known in the art. The method consists of generating clones of the circuit blocks to be used in the layout that are duplicated a number of times throughout a design. Once the clones are generated, they have to be maintained in synchronization such that if one of the clones is edited, other clones should be modified to reflect the edit. A number of approaches to synchronize clones are known in the art.
In accordance with one approach, an additional level of physical hierarchy defining the clone content is introduced such that all the clone instances point to an additional level of hierarchy containing the clone layout information. Since all the clone instances point to a single “master”, all the clones are maintained in synchronization. The drawback of the approach is that it introduces an additional level of hierarchy that is cumbersome for the user (e.g., the layout designer). Moreover, the approach is error-prone as the user may edit a clone out of context (of the master design).
In accordance with another approach to clone editing, all the clones except one are deleted. The remaining clone is edited and re-duplicated after it is edited to repopulate all the clone instances. In accordance with yet another approach to clone editing, a user individually updates the clones, one by one. Both of these approaches are cumbersome and error-prone.
Thus, there is a need for reducing the likelihood of layout error, preventing accidental editing of a clone and enabling automatic propagation of the changes made to one of the clones to all the clones without introducing a physical level of hierarchy.